package com.ruoyi.cloudsyncfile.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cloudsyncfile.model.NetdiskFile;
import com.ruoyi.cloudsyncfile.service.NetdiskFileService;
import com.ruoyi.cloudsyncfile.mapper.NetdiskFileMapper;
import com.ruoyi.cloudsyncfile.utils.BaseResult;
import com.ruoyi.cloudsyncfile.utils.OSSUtil;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;

/**
* @author 40278
* @description 针对表【netdisk_file(文件表)】的数据库操作Service实现
* @createDate 2024-10-23 14:26:14
*/
@Service
public class NetdiskFileServiceImpl extends ServiceImpl<NetdiskFileMapper, NetdiskFile>
    implements NetdiskFileService{

    public BaseResult upload(){
        BaseResult baseResult = BaseResult.successResult();
        Map<String,Object> data = new HashMap<>();

        // 本地文件路径
        String filePath = "C:\\Users\\40278\\Desktop\\Nacos.txt";
        File file = new File(filePath);
        // 检查文件是否存在
        if (!file.exists()) {
           return BaseResult.exceptionResult();
        }
        try {
            // 将本地文件转换为 FileInputStream
            InputStream inputStream = Files.newInputStream(file.toPath());
            // 使用 MockMultipartFile 创建一个 MultipartFile 对象
            MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), "text/plain", inputStream);
            // 实例化工具类
            OSSUtil ossUtil = new OSSUtil();
            // 调用工具类中的上传方法，将 MultipartFile 上传到 OSS
            String fileUrl = ossUtil.upload(multipartFile);
            // 返回文件上传后的 URL
            data.put("fileUrl",fileUrl);
            baseResult.setData(data);
            return baseResult;
        } catch (IOException e) {
            e.printStackTrace();
            return BaseResult.uploadFailResult();
        }
    }

}




